1. The Field of the Invention
The present invention relates to the field of computer programming, software development and management and, in particular, to the design, service-oriented programming, implementation, integration, deployment, control and maintenance of software modules/services and software applications.
2. The Relevant Technology
There are many computer programming languages, software design and development, and integration tools in existence today.
The current state for programming languages and software design tools is based on the well-known object-oriented development paradigm. Object-oriented programming languages inherit the complexity of the object-oriented paradigm. The current programming languages require an unnatural syntax-based coding or scripting approach that does not directly correspond to the way that non-technical people, functional experts and business analysts think. Furthermore, these languages often pivot around class definitions, class inheritance and polymorphism. These complex concepts require steep learning curves and can be only understood and utilized by highly technical programmers or computer scientists. Most people with functional know-how and understanding of business and application requirements are not technical enough to directly utilize the current programming languages and software development tools. As a result of this complexity, software development projects take too long to complete and are too expensive and non-flexible when it comes to the inevitable need for enhancements and maintenance.
Furthermore, the current integration tools are based on a message-oriented paradigm and only accommodate the communication and translation between different software layers. These tools are also too complex and are either not sufficient for general purpose programming, or utilize the complex object-oriented paradigm to accommodate programming capabilities.
It takes too long to develop, customize and integrate enterprise software solutions and the end result is too rigid. Today's approach to building software is very much like pouring concrete. Like developing software solutions, pouring concrete requires heavy lifting while the concrete is fluid. After the concrete sets, it is inflexible as is the case with the current approach to developing and delivering software solutions. A significantly less complex approach to software development can dramatically decrease the time to deliver software solutions. A dramatic decrease in the time to deliver will often correlate to a proportional decrease in cost. Time and cost are two main components of agility. Therefore, a significantly less complex approach to developing and delivering software solutions will increase the agility of an organization. If it took three weeks, instead of nine months to deliver or modify a software solution to support a business activity, organizations could optimize their operations in response to change and become significantly more agile. They could undertake less costly projects that would not be possible to undertake with an otherwise longer timescale.